<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=2"><meta name="theme-color" content="#FFF"><meta name="baidu-site-verification" content="code-DvHFUp3jdk"><meta name="baidu-site-verification" content="code-eHnRZZHAeP"><meta name="baidu-site-verification" content="code-EmlZBboqEW"><meta name="baidu-site-verification" content="code-Hf9ZXEHZ41"><meta name="360-site-verification" content="941073b91e9afaf02748ba000ba47e80"><meta name="360-site-verification" content="010bd45f0d523ce46f298dd597ef0289"><meta name="sogou_site_verification" content="hlLPNfmIjv"><meta name="sogou_site_verification" content="y3La2dTB20"><meta name="msvalidate.01" content="03829B28CC46A7AA4B5503897F475BA1"><script>!function(){var s="https://s.ssl.qhres2.com/ssl/ab77b6ea7f3fbf79.js";document.write('<script src="'+s+'" id="sozz"><\/script>')}()</script><script>!function(t,e,c,n,r,a,s){t[c]=t[c]||function(){(t[c].q=t[c].q||[]).push(arguments)},a=e.createElement(n),a.async=1,a.src="https://www.clarity.ms/tag/"+r+"?ref=bwt",s=e.getElementsByTagName(n)[0],s.parentNode.insertBefore(a,s)}(window,document,"clarity","script","8xwpfccwj2")</script><script>var _hmt=_hmt||[];!function(){var e=document.createElement("script");e.src="https://hm.baidu.com/hm.js?1d318b0509ca0909017253ed6f659ae4";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)}()</script><script>var _hmt=_hmt||[];!function(){var e=document.createElement("script");e.src="https://hm.baidu.com/hm.js?aea6c1471d6299bdd1c87a0836f18675";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)}()</script><script>var _hmt=_hmt||[];!function(){var e=document.createElement("script");e.src="https://hm.baidu.com/hm.js?498ca413655655a62058d6b5d7c62786";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)}()</script><script>var _hmt=_hmt||[];!function(){var e=document.createElement("script");e.src="https://hm.baidu.com/hm.js?e19e8161e13f718806b79f49240583b4";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)}()</script><link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon.png"><link rel="icon" type="image/ico" sizes="32x32" href="/images/favicon.ico"><meta http-equiv="Cache-Control" content="no-transform"><meta http-equiv="Cache-Control" content="no-siteapp"><meta name="google-site-verification" content="UA-139249935-1"><meta name="baidu-site-verification" content="cOtBu9CtTEIuwJeN"><link rel="alternate" type="application/rss+xml" title="了尘兰若的小坑" href="https://liaochenlanruo.gitee.io/rss.xml"><link rel="alternate" type="application/atom+xml" title="了尘兰若的小坑" href="https://liaochenlanruo.gitee.io/atom.xml"><link rel="alternate" type="application/json" title="了尘兰若的小坑" href="https://liaochenlanruo.gitee.io/feed.json"><link rel="stylesheet" href="//fonts.googleapis.com/css?family=Mulish:300,300italic,400,400italic,700,700italic%7CFredericka%20the%20Great:300,300italic,400,400italic,700,700italic%7CNoto%20Serif%20JP:300,300italic,400,400italic,700,700italic%7CNoto%20Serif%20SC:300,300italic,400,400italic,700,700italic%7CInconsolata:300,300italic,400,400italic,700,700italic&display=swap&subset=latin,latin-ext"><link rel="stylesheet" href="/css/app.css?v=0.2.5"><meta name="keywords" content="扩增子,生信软件,R语言"><link rel="canonical" href="https://liaochenlanruo.gitee.io/post/1177.html"><title>用MaAsLin2包做微生物组多变量线性模型关联分析 - 生物信息 | ResearchGo = 了尘兰若的小坑 = liaochenlanruo</title><meta name="generator" content="Hexo 5.4.0"></head><body itemscope itemtype="http://schema.org/WebPage"><div id="loading"><div class="cat"><div class="body"></div><div class="head"><div class="face"></div></div><div class="foot"><div class="tummy-end"></div><div class="bottom"></div><div class="legs left"></div><div class="legs right"></div></div><div class="paw"><div class="hands left"></div><div class="hands right"></div></div></div></div><div id="container"><header id="header" itemscope itemtype="http://schema.org/WPHeader"><div class="inner"><div id="brand"><div class="pjax"><h1 itemprop="name headline">用MaAsLin2包做微生物组多变量线性模型关联分析</h1><div class="meta"><span class="item" title="Created: 2024-07-30 22:41:21"><span class="icon"><i class="ic i-calendar"></i> </span><span class="text">Posted on</span> <time itemprop="dateCreated datePublished" datetime="2024-07-30T22:41:21+08:00">2024-07-30</time> </span><span class="item" title="Symbols count in article"><span class="icon"><i class="ic i-pen"></i> </span><span class="text">Symbols count in article</span> <span>11k</span> <span class="text">words</span> </span><span class="item" title="Reading time"><span class="icon"><i class="ic i-clock"></i> </span><span class="text">Reading time</span> <span>10 mins.</span></span></div></div></div><nav id="nav"><div class="inner"><div class="toggle"><div class="lines" aria-label="Toggle navigation bar"><span class="line"></span> <span class="line"></span> <span class="line"></span></div></div><ul class="menu"><li class="item title"><a href="/" rel="start">ResearchGo</a></li></ul><ul class="right"><li class="item theme"><i class="ic i-sun"></i></li><li class="item search"><i class="ic i-search"></i></li></ul></div></nav></div><div id="imgs" class="pjax"><img src="https://cdn.jsdelivr.net/gh/liaochenlanruo/cdn@master/img/custom/bgs/thumb_214.webp"></div></header><div id="waves"><svg class="waves" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 24 150 28" preserveAspectRatio="none" shape-rendering="auto"><defs><path id="gentle-wave" d="M-160 44c30 0 58-18 88-18s 58 18 88 18 58-18 88-18 58 18 88 18 v44h-352z"/></defs><g class="parallax"><use xlink:href="#gentle-wave" x="48" y="0"/><use xlink:href="#gentle-wave" x="48" y="3"/><use xlink:href="#gentle-wave" x="48" y="5"/><use xlink:href="#gentle-wave" x="48" y="7"/></g></svg></div><main><div class="inner"><div id="main" class="pjax"><div class="article wrap"><div class="breadcrumb" itemscope itemtype="https://schema.org/BreadcrumbList"><i class="ic i-home"></i> <span><a href="/">Home</a></span><i class="ic i-angle-right"></i> <span class="current" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"><a href="/categories/Bioinformatics/" itemprop="item" rel="index" title="In 生物信息"><span itemprop="name">生物信息</span></a><meta itemprop="position" content="1"></span></div><article itemscope itemtype="http://schema.org/Article" class="post block" lang="en"><link itemprop="mainEntityOfPage" href="https://liaochenlanruo.gitee.io/post/1177.html"><span hidden itemprop="author" itemscope itemtype="http://schema.org/Person"><meta itemprop="image" content="/images/head.jpg"><meta itemprop="name" content="Hualin Liu"><meta itemprop="description" content="liaochenlanruo, 分享微生物生物信息学分析方法，欢迎加入QQ群交流945751012，不接受群内广告！"></span><span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization"><meta itemprop="name" content="了尘兰若的小坑"></span><div class="body md" itemprop="articleBody"><div class="gallery" itemscope itemtype="http://schema.org/ImageGallery"><img data-src="https://cdn.jsdelivr.net/gh/liaochenlanruo/cdn@master/img/custom/bgs/thumb_214.webp" itemprop="contentUrl"></div><h1 id="简介"><a class="anchor" href="#简介">#</a> 简介</h1><p>MaAsLin 2 是 MaAsLin（微生物组多变量线性模型关联，Microbiome Multivariable Association with Linear Models）的下一代产品。</p><p>MaAsLin 2 是一个全面的 R 语言软件包，用于高效地确定表型、环境、暴露、协变量和微生物组元组学特征之间的多变量关联。MaAsLin 2 依赖于一般线性模型来适应大多数现代流行病学研究设计，包括横断面和纵向研究，以及多种数据探索、标准化和转换方法。</p><h1 id="安装"><a class="anchor" href="#安装">#</a> 安装</h1><figure class="highlight r"><figcaption data-lang="r"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token keyword">if</span><span class="token punctuation">(</span><span class="token operator">!</span>requireNamespace<span class="token punctuation">(</span><span class="token string">"BiocManager"</span><span class="token punctuation">,</span> quietly <span class="token operator">=</span> <span class="token boolean">TRUE</span><span class="token punctuation">)</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="2"></td><td><pre>    install.packages<span class="token punctuation">(</span><span class="token string">"BiocManager"</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="3"></td><td><pre>BiocManager<span class="token operator">::</span>install<span class="token punctuation">(</span><span class="token string">"Maaslin2"</span><span class="token punctuation">)</span></pre></td></tr></table></figure><h1 id="微生物组关联检测"><a class="anchor" href="#微生物组关联检测">#</a> 微生物组关联检测</h1><h2 id="输入文件"><a class="anchor" href="#输入文件">#</a> 输入文件</h2><h3 id="微生物组特征数据或功能数据"><a class="anchor" href="#微生物组特征数据或功能数据">#</a> 微生物组特征数据或功能数据</h3><ul><li>以制表符分隔列</li><li>行为样本，列为特征（微生物 / 基因 / 功能……）</li></ul><div style="overflow-x:auto"><table><thead><tr><th>ID</th><th>Bifidobacterium adolescentis</th><th>Bifidobacterium bifidum</th><th>Bifidobacterium longum</th><th>Bifidobacterium pseudocatenulatum</th><th>Collinsella aerofaciens</th><th>Bacteroides caccae</th><th>Bacteroides cellulosilyticus</th><th>Bacteroides dorei</th><th>Bacteroides eggerthii</th><th>Bacteroides faecis</th><th>Bacteroides finegoldii</th></tr></thead><tbody><tr><td>CSM5FZ3N_P</td><td>Cedars-Sinai</td><td>43</td><td>CD</td><td>C3001</td><td>No</td><td>No</td><td>0.792314801112388</td><td>No</td><td>No</td><td>No</td><td>1</td></tr><tr><td>CSM5FZ4M_P</td><td>Cedars-Sinai</td><td>43</td><td>UC</td><td>C3003</td><td>No</td><td>No</td><td>0.761300183426806</td><td>No</td><td>No</td><td>No</td><td>6</td></tr><tr><td>CSM5LLGB_P</td><td>MGH</td><td>30</td><td>CD</td><td>M2014</td><td>No</td><td>No</td><td>0.730525895151516</td><td>No</td><td>No</td><td>No</td><td>8</td></tr></tbody></table></div><h3 id="元数据"><a class="anchor" href="#元数据">#</a> 元数据</h3><ul><li>以制表符分隔列</li><li>行为样本，列为特征</li></ul><div style="overflow-x:auto"><table border="1"><thead><tr><th>ID</th><th>site</th><th>age</th><th>diagnosis</th><th>subject</th><th>antibiotics</th><th>dysbiosis_binary</th><th>dysbiosis</th><th>dysbiosisnonIBD</th><th>dysbiosisUC</th><th>dysbiosisCD</th><th>collection</th></tr></thead><tbody><tr><td>CSM5FZ3N_P</td><td>Cedars-Sinai</td><td>43</td><td>CD</td><td>C3001</td><td>No</td><td>No</td><td>0.792314801112388</td><td>No</td><td>No</td><td>No</td><td>1</td></tr><tr><td>CSM5FZ3R_P</td><td>Cedars-Sinai</td><td>43</td><td>CD</td><td>C3001</td><td>No</td><td>No</td><td>0.837923415694291</td><td>No</td><td>No</td><td>No</td><td>2</td></tr><tr><td>CSM5FZ3T_P</td><td>Cedars-Sinai</td><td>76</td><td>CD</td><td>C3002</td><td>No</td><td>Yes</td><td>0.924296928419748</td><td>No</td><td>No</td><td>Yes</td><td>1</td></tr><tr><td>CSM5FZ3V_P</td><td>Cedars-Sinai</td><td>43</td><td>CD</td><td>C3001</td><td>No</td><td>No</td><td>0.830400526852384</td><td>No</td><td>No</td><td>No</td><td>4</td></tr><tr><td>CSM5FZ3X_P</td><td>Cedars-Sinai</td><td>76</td><td>CD</td><td>C3002</td><td>No</td><td>Yes</td><td>0.910966992923041</td><td>No</td><td>No</td><td>Yes</td><td>2</td></tr><tr><td>CSM5FZ3Z_P</td><td>Cedars-Sinai</td><td>76</td><td>CD</td><td>C3002</td><td>No</td><td>Yes</td><td>0.912281677355966</td><td>No</td><td>No</td><td>Yes</td><td>3</td></tr><tr><td>CSM5FZ42_P</td><td>Cedars-Sinai</td><td>76</td><td>CD</td><td>C3002</td><td>No</td><td>Yes</td><td>0.903049136702093</td><td>No</td><td>No</td><td>Yes</td><td>4</td></tr><tr><td>CSM5FZ44_P</td><td>Cedars-Sinai</td><td>76</td><td>CD</td><td>C3002</td><td>No</td><td>Yes</td><td>0.87825476936449</td><td>No</td><td>No</td><td>Yes</td><td>5</td></tr><tr><td>CSM5FZ46_P</td><td>Cedars-Sinai</td><td>76</td><td>CD</td><td>C3002</td><td>No</td><td>Yes</td><td>0.92542872181954</td><td>No</td><td>No</td><td>Yes</td><td>6</td></tr><tr><td>CSM5FZ4A_P</td><td>Cedars-Sinai</td><td>47</td><td>UC</td><td>C3004</td><td>No</td><td>No</td><td>0.775160480913896</td><td>No</td><td>No</td><td>No</td><td>1</td></tr><tr><td>CSM5FZ4C_P</td><td>Cedars-Sinai</td><td>43</td><td>CD</td><td>C3001</td><td>No</td><td>No</td><td>0.836244630681399</td><td>No</td><td>No</td><td>No</td><td>5</td></tr><tr><td>CSM5FZ4E_P</td><td>Cedars-Sinai</td><td>43</td><td>UC</td><td>C3003</td><td>Yes</td><td>No</td><td>0.787616535915359</td><td>No</td><td>No</td><td>No</td><td>2</td></tr><tr><td>CSM5FZ4G_P</td><td>Cedars-Sinai</td><td>43</td><td>UC</td><td>C3003</td><td>No</td><td>No</td><td>0.68128445477854</td><td>No</td><td>No</td><td>No</td><td>3</td></tr><tr><td>CSM5FZ4K_P</td><td>Cedars-Sinai</td><td>43</td><td>UC</td><td>C3003</td><td>Yes</td><td>No</td><td>0.717164790084925</td><td>No</td><td>No</td><td>No</td><td>5</td></tr><tr><td>CSM5FZ4M</td><td>Cedars-Sinai</td><td>43</td><td>UC</td><td>C3003</td><td>No</td><td>No</td><td>0.761300183426806</td><td>No</td><td>No</td><td>No</td><td>6</td></tr><tr><td>CSM5LLGB_P</td><td>MGH</td><td>30</td><td>CD</td><td>M2014</td><td>No</td><td>No</td><td>0.730525895151516</td><td>No</td><td>No</td><td>No</td><td>8</td></tr></tbody></table></div><p>两个文件包含的样本可以不同，分析时只取二者共有的样本。样本顺序也无需一致。</p><h3 id="读入文件"><a class="anchor" href="#读入文件">#</a> 读入文件</h3><figure class="highlight r"><figcaption data-lang="r"></figcaption><table><tr><td data-num="1"></td><td><pre>df_input_data <span class="token operator">=</span> read.table<span class="token punctuation">(</span>file             <span class="token operator">=</span> input_data<span class="token punctuation">,</span></pre></td></tr><tr><td data-num="2"></td><td><pre>                           header           <span class="token operator">=</span> <span class="token boolean">TRUE</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="3"></td><td><pre>                           sep              <span class="token operator">=</span> <span class="token string">"\t"</span><span class="token punctuation">,</span> </pre></td></tr><tr><td data-num="4"></td><td><pre>                           row.names        <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="5"></td><td><pre>                           stringsAsFactors <span class="token operator">=</span> <span class="token boolean">FALSE</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="6"></td><td><pre>df_input_data<span class="token punctuation">[</span><span class="token number">1</span><span class="token operator">:</span><span class="token number">5</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token operator">:</span><span class="token number">5</span><span class="token punctuation">]</span></pre></td></tr><tr><td data-num="7"></td><td><pre></pre></td></tr><tr><td data-num="8"></td><td><pre>df_input_metadata <span class="token operator">=</span> read.table<span class="token punctuation">(</span>file             <span class="token operator">=</span> input_metadata<span class="token punctuation">,</span> </pre></td></tr><tr><td data-num="9"></td><td><pre>                               header           <span class="token operator">=</span> <span class="token boolean">TRUE</span><span class="token punctuation">,</span> </pre></td></tr><tr><td data-num="10"></td><td><pre>                               sep              <span class="token operator">=</span> <span class="token string">"\t"</span><span class="token punctuation">,</span> </pre></td></tr><tr><td data-num="11"></td><td><pre>                               row.names        <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="12"></td><td><pre>                               stringsAsFactors <span class="token operator">=</span> <span class="token boolean">FALSE</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="13"></td><td><pre>df_input_metadata<span class="token punctuation">[</span><span class="token number">1</span><span class="token operator">:</span><span class="token number">5</span><span class="token punctuation">,</span> <span class="token punctuation">]</span></pre></td></tr><tr><td data-num="14"></td><td><pre></pre></td></tr><tr><td data-num="15"></td><td><pre>df_input_path <span class="token operator">=</span> read.csv<span class="token punctuation">(</span><span class="token string">"./pathabundance_relab.tsv"</span><span class="token punctuation">,</span> </pre></td></tr><tr><td data-num="16"></td><td><pre>                         sep              <span class="token operator">=</span> <span class="token string">"\t"</span><span class="token punctuation">,</span> </pre></td></tr><tr><td data-num="17"></td><td><pre>                         stringsAsFactors <span class="token operator">=</span> <span class="token boolean">FALSE</span><span class="token punctuation">,</span> </pre></td></tr><tr><td data-num="18"></td><td><pre>                         row.names        <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">)</span></pre></td></tr><tr><td data-num="19"></td><td><pre>df_input_path<span class="token punctuation">[</span><span class="token number">1</span><span class="token operator">:</span><span class="token number">5</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token operator">:</span><span class="token number">5</span><span class="token punctuation">]</span></pre></td></tr></table></figure><h2 id="运行maaslin-2"><a class="anchor" href="#运行maaslin-2">#</a> 运行 MaAsLin 2</h2><p>在 MaAsLin 中，可以使用几种不同类型的统计模型来进行关联测试（例如简单线性模型、零膨胀模型、基于计数的模型等）。作者在论文中评估了各种模型的优缺点，虽然默认模型通常适用于大多数分析，但在某些情况下，用户可能希望选择不同的模型。这同样适用于多种不同的微生物群落数据类型（taxonomy 或 functional profiles）、环境（人类或其他）和测量方式（计数或相对比例），只要使用适当修改过的归一化 / 转换方案即可。</p><p>对于模型选择，如果你的输入是 <code>计数数据</code> ，那么你可以使用 <code>NEGBIN</code> 和 <code>ZINB</code> 模型；而对于 <code>非计数数据</code> （如百分比、CPM 或相对丰度）的输入，你可以使用 <code>LM</code> 和 <code>CPLM</code> 模型。</p><p>在 MaAsLin 2 实现的归一化方法中，<u>TMM 和 CSS 仅适用于计数数据，并且它们也返回归一化后的计数</u>，这与 TSS 和 CLR 不同。因此，如果你的输入是计数数据，你可以使用上述两种归一化方法（即 TMM、CSS 或 NONE（如果数据已经归一化））而无需进一步转换（即 transform = NONE）。</p><p><u>在非计数模型中，CPLM 要求数据为正数</u>。因此，任何产生负值的转换通常都不适用于 <code>CPLM</code> 。</p><p>由于所有非 LM 模型都与其与广义线性模型（GLM）的紧密联系而使用固有的对数链接转换，因此建议它们以 <code>transform = NONE</code> 的方式运行。</p><p>除此之外，<u>LM 是唯一能够处理正数和负数（在归一化 / 转换之后）的模型</u>，并且（根据手稿）它通常对参数变化具有更强的鲁棒性（这是非 LM 模型的典型限制）。关于是否使用 LM、CPLM 或其他模型，直观上，<u>在存在零值的情况下， <code>CPLM</code> 或 <code>零膨胀替代模型</code> 应该表现更好，但根据我们的基准测试，我们没有证据表明 CPLM 显著优于 LM 模型</u>。因此，<b>在选择模型时，应综合考虑数据的特性、研究目的以及模型的适用性和性能</b>。</p><table><thead><tr><th style="text-align:center">Model (-m ANALYSIS_METHOD)</th><th style="text-align:center">Data type</th><th style="text-align:center">Normalization (-n NORMALIZATION)</th><th style="text-align:center">Transformation (-t TRANSFORM)</th></tr></thead><tbody><tr><td style="text-align:center">LM</td><td style="text-align:center">count and non-count</td><td style="text-align:center">TSS, CLR, NONE</td><td style="text-align:center">LOG, LOGIT, AST, NONE</td></tr><tr><td style="text-align:center">CPLM</td><td style="text-align:center">count and non-count</td><td style="text-align:center">TSS, TMM, CSS, NONE</td><td style="text-align:center">NONE</td></tr><tr><td style="text-align:center">NEGBIN</td><td style="text-align:center">count</td><td style="text-align:center">TMM, CSS, NONE</td><td style="text-align:center">NONE</td></tr><tr><td style="text-align:center">ZINB</td><td style="text-align:center">count</td><td style="text-align:center">TMM, CSS, NONE</td><td style="text-align:center">NONE</td></tr></tbody></table><p><strong>注</strong>：通常，还需要考虑用于过滤数据（即流行率和丰度阈值）的阈值，以减少异常值和假阳性。有关此方面的更多详细信息，请参阅 MaAsLin 2 中的第<span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2Jpb2Jha2VyeS9iaW9iYWtlcnkvd2lraS9tYWFzbGluMiM0MzEtcHJldmFsZW5jZS1hbmQtYWJ1bmRhbmNlLWZpbHRlcmluZy1pbi1tYWFzbGluMg=="> 4.3.1 节 “流行率和丰度过滤”</span>。</p><p>以下命令在 HMP2 数据上运行 MaAsLin 2，执行多变量回归模型以测试微生物物种丰度与 IBD 诊断和<span class="exturl" data-url="aHR0cHM6Ly93d3cubmF0dXJlLmNvbS9hcnRpY2xlcy9zNDE1ODYtMDE5LTEyMzctOQ==">菌群失调评分</span>之间的关联（ <code>fixed_effects = c(&quot;diagnosis&quot;, &quot;dysbiosis&quot;)</code> ）。对于具有超过 2 个水平的任何分类变量，还需要指定哪个变量应作为参考水平，方法是使用（ <code>reference = c(&quot;diagnosis,nonIBD&quot;)</code> ）。<strong>注</strong>：<font color="#FF0000">在变量和水平之间添加空格可能会导致使用错误的参考水平</font>。输出将生成在当前工作目录下的名为 demo_output 的文件夹中（ <code>output = &quot;demo_output&quot;</code> ）。在此示例中，输入数据已预先进行归一化和过滤，因此我们也将关闭默认的归一化和流行率过滤。</p><figure class="highlight r"><figcaption data-lang="r"></figcaption><table><tr><td data-num="1"></td><td><pre>fit_data <span class="token operator">=</span> Maaslin2<span class="token punctuation">(</span>input_data     <span class="token operator">=</span> df_input_data<span class="token punctuation">,</span> </pre></td></tr><tr><td data-num="2"></td><td><pre>                    input_metadata <span class="token operator">=</span> df_input_metadata<span class="token punctuation">,</span> </pre></td></tr><tr><td data-num="3"></td><td><pre>                    min_prevalence <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="4"></td><td><pre>                    normalization  <span class="token operator">=</span> <span class="token string">"NONE"</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="5"></td><td><pre>                    output         <span class="token operator">=</span> <span class="token string">"demo_output"</span><span class="token punctuation">,</span> </pre></td></tr><tr><td data-num="6"></td><td><pre>                    fixed_effects  <span class="token operator">=</span> c<span class="token punctuation">(</span><span class="token string">"diagnosis"</span><span class="token punctuation">,</span> <span class="token string">"dysbiosis"</span><span class="token punctuation">)</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="7"></td><td><pre>                    reference      <span class="token operator">=</span> c<span class="token punctuation">(</span><span class="token string">"diagnosis,nonIBD"</span><span class="token punctuation">)</span><span class="token punctuation">)</span></pre></td></tr></table></figure><h2 id="输出"><a class="anchor" href="#输出">#</a> 输出</h2><h3 id="重要关联"><a class="anchor" href="#重要关联">#</a> 重要关联</h3><p>MaAsLin 2 最重要的输出之一可能是重要关联的列表。这些关联在 <code>significant_results.tsv</code> 文件中提供：</p><p><img data-src="https://cdn.jsdelivr.net/gh/biobakery/omnibus-and-maaslin2-rscripts-and-hmp2-data@master/assets/sigresults_screenshot.png" alt="significant_results.tsv"></p><p>这些是通过 MaAsLin 2 显著性阈值的全部关联列表，按照 q 值递增的顺序排序。列包括：</p><ul><li><p><strong>metadata</strong>：与微生物特征相关联的变量名。</p></li><li><p><strong>feature</strong>：微生物特征（分类群、基因、途径等）。</p></li><li><p><strong>value</strong>：对于分类特征，这是报告系数和关联显著性的具体特征水平。</p></li><li><p><strong>coef</strong>：模型系数值（效应大小）。对于分类变量，系数表示在 value 中指定的类别与参考类别之间的对比。</p></li><li><p><strong>stderr</strong>：模型的标准误差。</p></li><li><p><strong>N</strong>：用于此关联的模型中样本的总数（例如，因为可以排除缺失值）。</p></li><li><p><strong>N.not.0</strong>：在这些样本中，特征非零的总数。</p></li><li><p><strong>pval</strong>：此关联的名义显著性。</p></li><li><p><strong>qval</strong>：使用 p.adjust 函数和校正方法（如 BH 等）计算得到的校正显著性。</p></li><li><p><strong>问题</strong>：如何解释这个表格的第一行？</p></li></ul><p>对于 <code>significant_results.tsv</code> 中的每个重要关联，MaAsLin 2 还会生成可视化图表以供检查（分类变量的箱线图，连续变量的散点图）。这些图表命名为 “metadata_name.pdf”。例如，从我们的分析运行中，我们得到了可视化文件 <code>dysbiosis.pdf</code> 和 <code>diagnosis.pdf</code> 。</p><p><img data-src="https://cdn.jsdelivr.net/gh/biobakery/omnibus-and-maaslin2-rscripts-and-hmp2-data@master/assets/scatterplot_screenshot.png" alt="dysbiosis.pdf"></p><p><img data-src="https://cdn.jsdelivr.net/gh/biobakery/omnibus-and-maaslin2-rscripts-and-hmp2-data@master/assets/boxplot_screenshot.png" alt="diagnosis.pdf"></p><h3 id="输出文件完整列表"><a class="anchor" href="#输出文件完整列表">#</a> 输出文件完整列表</h3><p>MaAsLin 2 生成两种类型的输出文件：数据和可视化文件。</p><ul><li><p>数据输出文件</p><ul><li><p>significant_results.tsv</p></li><li><p>all_results.tsv</p><ul><li>与 significant_results.tsv 格式相同，但包含所有关联结果（而不仅仅是显著的结果）。</li><li>您也可以在 R 中使用 fit_data$results 访问此表。</li></ul></li><li><p>residuals.rds</p><ul><li>此文件包含一个包含每个特征残差的数据框。</li></ul></li><li><p>maaslin2.log</p><ul><li>此文件包含运行的所有日志信息。</li><li>它包括所有设置、警告、错误和运行的步骤。</li></ul></li></ul></li><li><p>可视化输出文件</p><ul><li><p>heatmap.pdf</p><ul><li>此文件包含显著关联的热图。</li></ul></li><li><p>[a-z/0-9]+.pdf</p><ul><li>为每个显著关联生成一个图表。</li><li>对于连续元数据，使用散点图。</li><li>对于分类数据，使用箱线图。</li><li>绘制的数据点已经过归一化、过滤和转换。</li></ul></li></ul></li></ul><h3 id="maaslin-2在功能谱上的应用"><a class="anchor" href="#maaslin-2在功能谱上的应用">#</a> MaAsLin 2 在功能谱上的应用</h3><p>如果您的功能表是由 HUMAnN 生成的，并且已经使用 <code>humann_renorm_table</code> 脚本进行了归一化，那么您不需要执行任何额外的归一化 —— 测序深度的影响已经被消除（这正是本教程中将使用的）。我们倾向于使用 <code>CPM</code> 单位，因为我们发现它们更方便，但在建模目的上，它们在数值上与相对丰度是等价的（ <code>CPM = RA * 1e6</code> ）。</p><p>否则，可使用上述关于模型 / 归一化 / 转换的相同思路。</p><p>在使用 MaAsLin 2 处理功能谱时的一些其他快速提示：</p><ul><li>为了减少特征数量，通常希望运行未分层的功能特征（或分层特征的过滤子集）。</li><li>可能还想移除与特定分类群高度相关的功能特征（即可能由该微生物贡献），因为这些特征可以通过分类学变化得到更好的解释。</li></ul><figure class="highlight r"><figcaption data-lang="r"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token comment">#This can also be done with with the HUMAnN 3 untiliy `humann_split_stratified_table`</span></pre></td></tr><tr><td data-num="2"></td><td><pre>unstrat_pathways <span class="token operator">&lt;-</span><span class="token keyword">function</span><span class="token punctuation">(</span>dat_path<span class="token punctuation">)</span><span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="3"></td><td><pre>  temp <span class="token operator">=</span> dat_path<span class="token punctuation">[</span><span class="token operator">!</span>grepl<span class="token punctuation">(</span><span class="token string">"\\|"</span><span class="token punctuation">,</span>rownames<span class="token punctuation">(</span>dat_path<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">,</span><span class="token punctuation">]</span></pre></td></tr><tr><td data-num="4"></td><td><pre>  return<span class="token punctuation">(</span>temp<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="5"></td><td><pre><span class="token punctuation">&#125;</span></pre></td></tr><tr><td data-num="6"></td><td><pre></pre></td></tr><tr><td data-num="7"></td><td><pre>df_input_path <span class="token operator">=</span> unstrat_pathways<span class="token punctuation">(</span>df_input_path<span class="token punctuation">)</span></pre></td></tr></table></figure><p>在由<span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2Jpb2Jha2VyeS9iaW9iYWtlcnkvd2lraS9iaW9iYWtlcnlfd29ya2Zsb3dz"> bioBakery 工作流程</span>生成的 MetaCyc 途径表上运行与上述相同的模型。</p><figure class="highlight r"><figcaption data-lang="r"></figcaption><table><tr><td data-num="1"></td><td><pre>fit_func <span class="token operator">=</span> Maaslin2<span class="token punctuation">(</span>input_data     <span class="token operator">=</span> df_input_path<span class="token punctuation">,</span> </pre></td></tr><tr><td data-num="2"></td><td><pre>                    input_metadata <span class="token operator">=</span> df_input_metadata<span class="token punctuation">,</span> </pre></td></tr><tr><td data-num="3"></td><td><pre>                    output         <span class="token operator">=</span> <span class="token string">"demo_functional"</span><span class="token punctuation">,</span> </pre></td></tr><tr><td data-num="4"></td><td><pre>                    fixed_effects  <span class="token operator">=</span> c<span class="token punctuation">(</span><span class="token string">"diagnosis"</span><span class="token punctuation">,</span> <span class="token string">"dysbiosis"</span><span class="token punctuation">)</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="5"></td><td><pre>                    reference      <span class="token operator">=</span> c<span class="token punctuation">(</span><span class="token string">"diagnosis,nonIBD"</span><span class="token punctuation">)</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="6"></td><td><pre>                    min_abundance  <span class="token operator">=</span> <span class="token number">0.0001</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="7"></td><td><pre>                    min_prevalence <span class="token operator">=</span> <span class="token number">0.1</span><span class="token punctuation">)</span></pre></td></tr></table></figure><p><strong>注意</strong>：在这里，我们有列中的样本和行中的特征，MaAsLin 2 正确地识别了这一点，并且能够匹配样本。</p><p>作者最近还发表了关于使用 MaAsLin 2 分析宏转录组学数据（MTX）中差异特征的研究，有关该主题的更多信息，请参阅<span class="exturl" data-url="aHR0cHM6Ly9hY2FkZW1pYy5vdXAuY29tL2Jpb2luZm9ybWF0aWNzL2FydGljbGUvMzcvU3VwcGxlbWVudF8xL2kzNC82MzE5NzAx">最近的出版物</span>。</p><h1 id="高级主题"><a class="anchor" href="#高级主题">#</a> 高级主题</h1><h2 id="交互作用"><a class="anchor" href="#交互作用">#</a> 交互作用</h2><p>许多统计分析都关注于测试某些变量之间的交互作用。不幸的是，MaAsLin 2 目前尚未提供直接的界面来进行此操作。相反，用户需要创建人工交互列作为额外的 fixed_effects 项。以上面的拟合为例，为了测试诊断与菌群失调之间的交互作用，我可以创建两列额外的数据：CD_dysbiosis 和 UC_dysbiosis（因为诊断的参考是非 IBD）。</p><figure class="highlight r"><figcaption data-lang="r"></figcaption><table><tr><td data-num="1"></td><td><pre>df_input_metadata<span class="token operator">$</span>CD_dysbiosis <span class="token operator">=</span> <span class="token punctuation">(</span>df_input_metadata<span class="token operator">$</span>diagnosis <span class="token operator">==</span> <span class="token string">"CD"</span><span class="token punctuation">)</span> <span class="token operator">*</span></pre></td></tr><tr><td data-num="2"></td><td><pre>                                 df_input_metadata<span class="token operator">$</span>dysbiosis</pre></td></tr><tr><td data-num="3"></td><td><pre>df_input_metadata<span class="token operator">$</span>UC_dysbiosis <span class="token operator">=</span> <span class="token punctuation">(</span>df_input_metadata<span class="token operator">$</span>diagnosis <span class="token operator">==</span> <span class="token string">"UC"</span><span class="token punctuation">)</span> <span class="token operator">*</span></pre></td></tr><tr><td data-num="4"></td><td><pre>                                 df_input_metadata<span class="token operator">$</span>dysbiosis</pre></td></tr><tr><td data-num="5"></td><td><pre></pre></td></tr><tr><td data-num="6"></td><td><pre>fit_data_ixn <span class="token operator">=</span> Maaslin2<span class="token punctuation">(</span>input_data     <span class="token operator">=</span> df_input_data<span class="token punctuation">,</span> </pre></td></tr><tr><td data-num="7"></td><td><pre>                        input_metadata <span class="token operator">=</span> df_input_metadata<span class="token punctuation">,</span> </pre></td></tr><tr><td data-num="8"></td><td><pre>                        min_prevalence <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="9"></td><td><pre>                        normalization  <span class="token operator">=</span> <span class="token string">"NONE"</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="10"></td><td><pre>                        output         <span class="token operator">=</span> <span class="token string">"demo_output_interaction"</span><span class="token punctuation">,</span> </pre></td></tr><tr><td data-num="11"></td><td><pre>                        fixed_effects  <span class="token operator">=</span> c<span class="token punctuation">(</span><span class="token string">"diagnosis"</span><span class="token punctuation">,</span> <span class="token string">"dysbiosis"</span><span class="token punctuation">,</span> <span class="token string">"CD_dysbiosis"</span><span class="token punctuation">,</span> <span class="token string">"UC_dysbiosis"</span><span class="token punctuation">)</span><span class="token punctuation">,</span> </pre></td></tr><tr><td data-num="12"></td><td><pre>                        reference      <span class="token operator">=</span> c<span class="token punctuation">(</span><span class="token string">"diagnosis,nonIBD"</span><span class="token punctuation">)</span><span class="token punctuation">)</span></pre></td></tr></table></figure><h2 id="随机效应"><a class="anchor" href="#随机效应">#</a> 随机效应</h2><p>某些研究自然地将样本观测值 “分组”，例如在纵向设计中按受试者分组或在家庭设计中按家庭分组。对于统计分析来说，重要的是要处理属于同一组的样本之间的非独立性。MaAsLin 2 通过 <code>random_effects</code> 参数提供了一个简单的界面来处理这个问题，用户可以在其中指定分组变量来运行混合效应模型。例如，我们注意到 HMP2 是一个纵向设计，其中同一个受试者（列中的 subject）可以有多个样本。因此，我们要求 MaAsLin 2 使用 subject 作为其随机效应分组变量：</p><figure class="highlight r"><figcaption data-lang="r"></figcaption><table><tr><td data-num="1"></td><td><pre>fit_data_random <span class="token operator">=</span> Maaslin2<span class="token punctuation">(</span>input_data     <span class="token operator">=</span> df_input_data<span class="token punctuation">,</span> </pre></td></tr><tr><td data-num="2"></td><td><pre>                           input_metadata <span class="token operator">=</span> df_input_metadata<span class="token punctuation">,</span> </pre></td></tr><tr><td data-num="3"></td><td><pre>                           min_prevalence <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="4"></td><td><pre>                           normalization  <span class="token operator">=</span> <span class="token string">"NONE"</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="5"></td><td><pre>                           output         <span class="token operator">=</span> <span class="token string">"demo_output_random"</span><span class="token punctuation">,</span> </pre></td></tr><tr><td data-num="6"></td><td><pre>                           fixed_effects  <span class="token operator">=</span> c<span class="token punctuation">(</span><span class="token string">"diagnosis"</span><span class="token punctuation">,</span> <span class="token string">"dysbiosis"</span><span class="token punctuation">)</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="7"></td><td><pre>                           random_effects <span class="token operator">=</span> c<span class="token punctuation">(</span><span class="token string">"subject"</span><span class="token punctuation">)</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="8"></td><td><pre>                           reference      <span class="token operator">=</span> c<span class="token punctuation">(</span><span class="token string">"diagnosis,nonIBD"</span><span class="token punctuation">)</span><span class="token punctuation">)</span></pre></td></tr></table></figure><p>如果你对在纵向研究中测试时间的影响感兴趣，那么在调用 MaAsLin 2 时，时间点变量应该包含在 <code>fixed_effects</code> 中。</p><ul><li>问题：直觉上，你能想到为什么解决样本之间的非独立性很重要吗？<ul><li>提示：想象一下一个简单的场景，你有两个受试者，一个病例和一个对照，每个受试者都有两个样本。</li><li>当同一受试者的样本高度独立时，与它们高度相关时，有效样本大小是多少？</li></ul></li></ul><h2 id="其他选项"><a class="anchor" href="#其他选项">#</a> 其他选项</h2><p>MaAsLin 2 提供了许多参数选项，用于不同的数据预处理（规范化、过滤、转换）和其他任务。这些选项的完整列表是：</p><ul><li><p>min_abundance</p><ul><li>每个特征的最小丰度 [默认值：0]</li></ul></li><li><p>min_prevalence</p><ul><li>以最小丰度检测到一个特征的最小样本百分比 [默认值：0.1]</li></ul></li><li><p>max_significance</p><ul><li>显著性的 q 值阈值 [默认值：0.25]</li></ul></li><li><p>normalization</p><ul><li>要应用的规范化方法 [默认值：&quot;TSS&quot;] [ 选项：&quot;TSS&quot;、&quot;CLR&quot;、&quot;CSS&quot;、&quot;NONE&quot;、&quot;TMM&quot; ]</li></ul></li><li><p>transform</p><ul><li>要应用的转换 [默认值：&quot;LOG&quot;] [ 选项：&quot;LOG&quot;、&quot;LOGIT&quot;、&quot;AST&quot;、&quot;NONE&quot; ]</li></ul></li><li><p>analysis_method</p><ul><li>要应用的分析方法 [默认值：&quot;LM&quot;] [ 选项：&quot;LM&quot;、&quot;CPLM&quot;、&quot;ZICP&quot;、&quot;NEGBIN&quot;、&quot;ZINB&quot; ]</li></ul></li><li><p>correction</p><ul><li>计算 q 值的校正方法 [默认值：&quot;BH&quot;]</li></ul></li><li><p>standardize</p><ul><li>应用 z 分数，以便连续元数据在同一尺度上 [默认值：TRUE]</li></ul></li><li><p>plot_heatmap</p><ul><li>为显著关联生成热图 [默认值：TRUE]</li></ul></li><li><p>heatmap_first_n</p><ul><li>在热图中，绘制具有显著关联的前 N 个特征 [默认值：50]</li></ul></li><li><p>plot_scatter</p><ul><li>为显著关联生成散点图 [默认值：TRUE]</li></ul></li><li><p>cores</p><ul><li>并行运行的 R 进程数 [默认值：1]</li></ul></li><li><p>reference</p><ul><li>用作具有两个以上级别的变量的参考，以 “变量，参考” 的字符串形式提供，多个变量之间用分号分隔。</li></ul></li></ul><h3 id="maaslin-2-中的流行率和丰度过滤"><a class="anchor" href="#maaslin-2-中的流行率和丰度过滤">#</a> MaAsLin 2 中的流行率和丰度过滤</h3><p>通常，只有在某个特征在 “足够” 多的时间内非零时，测试特征与元数据之间的关联才有意义。“足够” 的具体比例可能因研究而异，但 10-50% 的最小流行率阈值并不罕见（高达 70-90% 也是合理的）。由于我们已经在使用一小部分精选的演示数据，我们将使用 <code>min_prevalence = 0.1</code> 来仅测试至少 10% 的非零值的特征。请注意：这是 MaAsLin 2 中的默认参数设置。</p><p>类似地，通常只希望测试在这么多样本中达到最小丰度阈值的特征。默认情况下，MaAsLin 2 会认为任何非零值都是可靠的，如果你已经在数据集中进行了充分的质量控制（QC），那么这样做是合适的。然而，如果你想要进行更多过滤或采取保守态度，你可以设置一个最小丰度阈值，如 <code>min_abundance = 0.0001</code> ，以仅测试达到这个（相对）丰度的特征。</p><p>将这些参数组合起来，我们可以使用两者来运行 MaAsLin 2（并且速度会更快！）：</p><figure class="highlight r"><figcaption data-lang="r"></figcaption><table><tr><td data-num="1"></td><td><pre>fit_data_filter <span class="token operator">=</span> Maaslin2<span class="token punctuation">(</span>input_data     <span class="token operator">=</span> df_input_data<span class="token punctuation">,</span> </pre></td></tr><tr><td data-num="2"></td><td><pre>                           input_metadata <span class="token operator">=</span> df_input_metadata<span class="token punctuation">,</span> </pre></td></tr><tr><td data-num="3"></td><td><pre>                           normalization  <span class="token operator">=</span> <span class="token string">"NONE"</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="4"></td><td><pre>                           output         <span class="token operator">=</span> <span class="token string">"demo_output_filter"</span><span class="token punctuation">,</span> </pre></td></tr><tr><td data-num="5"></td><td><pre>                           fixed_effects  <span class="token operator">=</span> c<span class="token punctuation">(</span><span class="token string">"diagnosis"</span><span class="token punctuation">,</span> <span class="token string">"dysbiosis"</span><span class="token punctuation">)</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="6"></td><td><pre>                           reference      <span class="token operator">=</span> c<span class="token punctuation">(</span><span class="token string">"diagnosis,nonIBD"</span><span class="token punctuation">)</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="7"></td><td><pre>                           random_effects <span class="token operator">=</span> c<span class="token punctuation">(</span><span class="token string">"subject"</span><span class="token punctuation">)</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="8"></td><td><pre>                           min_prevalence <span class="token operator">=</span> <span class="token number">0.1</span><span class="token punctuation">,</span></pre></td></tr><tr><td data-num="9"></td><td><pre>                           min_abundance  <span class="token operator">=</span> <span class="token number">0.0001</span><span class="token punctuation">)</span></pre></td></tr></table></figure><h1 id="命令行"><a class="anchor" href="#命令行">#</a> 命令行</h1><figure class="highlight bash"><figcaption data-lang="bash"></figcaption><table><tr><td data-num="1"></td><td><pre>Maaslin2.R --transform<span class="token operator">=</span>AST --fixed_effects<span class="token operator">=</span><span class="token string">"diagnosis,dysbiosis"</span>  /usr/local/lib/R/site-library/Maaslin2/extdata/HMP2_taxonomy.tsv /usr/local/lib/R/site-library/Maaslin2/extdata/HMP2_metadata.tsv demo_output --reference<span class="token operator">=</span><span class="token string">"diagnosis,nonIBD"</span></pre></td></tr></table></figure><figure class="highlight text"><figcaption data-lang="text"></figcaption><table><tr><td data-num="1"></td><td><pre>$ Maaslin2.R --help</pre></td></tr><tr><td data-num="2"></td><td><pre>Usage: ./R/Maaslin2.R [options] &lt;data.tsv> &lt;metadata.tsv> &lt;output_folder></pre></td></tr><tr><td data-num="3"></td><td><pre></pre></td></tr><tr><td data-num="4"></td><td><pre>Options:</pre></td></tr><tr><td data-num="5"></td><td><pre>    -h, --help</pre></td></tr><tr><td data-num="6"></td><td><pre>        Show this help message and exit</pre></td></tr><tr><td data-num="7"></td><td><pre></pre></td></tr><tr><td data-num="8"></td><td><pre>    -a MIN_ABUNDANCE, --min_abundance=MIN_ABUNDANCE</pre></td></tr><tr><td data-num="9"></td><td><pre>        The minimum abundance for each feature [ Default: 0 ]</pre></td></tr><tr><td data-num="10"></td><td><pre></pre></td></tr><tr><td data-num="11"></td><td><pre>    -p MIN_PREVALENCE, --min_prevalence=MIN_PREVALENCE</pre></td></tr><tr><td data-num="12"></td><td><pre>        The minimum percent of samples for which a feature </pre></td></tr><tr><td data-num="13"></td><td><pre>        is detected at minimum abundance [ Default: 0.1 ]</pre></td></tr><tr><td data-num="14"></td><td><pre></pre></td></tr><tr><td data-num="15"></td><td><pre>    -s MAX_SIGNIFICANCE, --max_significance=MAX_SIGNIFICANCE</pre></td></tr><tr><td data-num="16"></td><td><pre>        The q-value threshold for significance [ Default: 0.25 ]</pre></td></tr><tr><td data-num="17"></td><td><pre></pre></td></tr><tr><td data-num="18"></td><td><pre>    -n NORMALIZATION, --normalization=NORMALIZATION</pre></td></tr><tr><td data-num="19"></td><td><pre>        The normalization method to apply [ Default: TSS ]</pre></td></tr><tr><td data-num="20"></td><td><pre>        [ Choices: TSS, CLR, CSS, NONE, TMM ]</pre></td></tr><tr><td data-num="21"></td><td><pre></pre></td></tr><tr><td data-num="22"></td><td><pre>    -t TRANSFORM, --transform=TRANSFORM</pre></td></tr><tr><td data-num="23"></td><td><pre>        The transform to apply [ Default: LOG ]</pre></td></tr><tr><td data-num="24"></td><td><pre>        [ Choices: LOG, LOGIT, AST, NONE ]</pre></td></tr><tr><td data-num="25"></td><td><pre></pre></td></tr><tr><td data-num="26"></td><td><pre>    -m ANALYSIS_METHOD, --analysis_method=ANALYSIS_METHOD</pre></td></tr><tr><td data-num="27"></td><td><pre>        The analysis method to apply [ Default: LM ]</pre></td></tr><tr><td data-num="28"></td><td><pre>        [ Choices: LM, CPLM, NEGBIN, ZINB ]</pre></td></tr><tr><td data-num="29"></td><td><pre></pre></td></tr><tr><td data-num="30"></td><td><pre>    -r RANDOM_EFFECTS, --random_effects=RANDOM_EFFECTS</pre></td></tr><tr><td data-num="31"></td><td><pre>        The random effects for the model, comma-delimited</pre></td></tr><tr><td data-num="32"></td><td><pre>        for multiple effects [ Default: none ]</pre></td></tr><tr><td data-num="33"></td><td><pre></pre></td></tr><tr><td data-num="34"></td><td><pre>    -f FIXED_EFFECTS, --fixed_effects=FIXED_EFFECTS</pre></td></tr><tr><td data-num="35"></td><td><pre>        The fixed effects for the model, comma-delimited</pre></td></tr><tr><td data-num="36"></td><td><pre>        for multiple effects [ Default: all ]</pre></td></tr><tr><td data-num="37"></td><td><pre></pre></td></tr><tr><td data-num="38"></td><td><pre>    -c CORRECTION, --correction=CORRECTION</pre></td></tr><tr><td data-num="39"></td><td><pre>        The correction method for computing the </pre></td></tr><tr><td data-num="40"></td><td><pre>        q-value [ Default: BH ]</pre></td></tr><tr><td data-num="41"></td><td><pre></pre></td></tr><tr><td data-num="42"></td><td><pre>    -z STANDARDIZE, --standardize=STANDARDIZE</pre></td></tr><tr><td data-num="43"></td><td><pre>        Apply z-score so continuous metadata are </pre></td></tr><tr><td data-num="44"></td><td><pre>        on the same scale [ Default: TRUE ]</pre></td></tr><tr><td data-num="45"></td><td><pre></pre></td></tr><tr><td data-num="46"></td><td><pre>    -l PLOT_HEATMAP, --plot_heatmap=PLOT_HEATMAP</pre></td></tr><tr><td data-num="47"></td><td><pre>        Generate a heatmap for the significant </pre></td></tr><tr><td data-num="48"></td><td><pre>        associations [ Default: TRUE ]</pre></td></tr><tr><td data-num="49"></td><td><pre></pre></td></tr><tr><td data-num="50"></td><td><pre>    -i HEATMAP_FIRST_N, --heatmap_first_n=HEATMAP_FIRST_N</pre></td></tr><tr><td data-num="51"></td><td><pre>        In heatmap, plot top N features with significant </pre></td></tr><tr><td data-num="52"></td><td><pre>        associations [ Default: TRUE ]</pre></td></tr><tr><td data-num="53"></td><td><pre></pre></td></tr><tr><td data-num="54"></td><td><pre>    -o PLOT_SCATTER, --plot_scatter=PLOT_SCATTER</pre></td></tr><tr><td data-num="55"></td><td><pre>        Generate scatter plots for the significant</pre></td></tr><tr><td data-num="56"></td><td><pre>        associations [ Default: TRUE ]</pre></td></tr><tr><td data-num="57"></td><td><pre></pre></td></tr><tr><td data-num="58"></td><td><pre>    -e CORES, --cores=CORES</pre></td></tr><tr><td data-num="59"></td><td><pre>        The number of R processes to run in parallel</pre></td></tr><tr><td data-num="60"></td><td><pre>        [ Default: 1 ]</pre></td></tr><tr><td data-num="61"></td><td><pre></pre></td></tr><tr><td data-num="62"></td><td><pre>    -r REFERENCE, --reference='VARIABLE,REFERENCE'</pre></td></tr><tr><td data-num="63"></td><td><pre>        The factor to use as a reference for a </pre></td></tr><tr><td data-num="64"></td><td><pre>        variable with more than two levels </pre></td></tr><tr><td data-num="65"></td><td><pre>        provided as a string of 'variable,reference' </pre></td></tr><tr><td data-num="66"></td><td><pre>        semi-colon delimited for multiple variables.</pre></td></tr></table></figure><h1 id="参考文献"><a class="anchor" href="#参考文献">#</a> 参考文献</h1><ul><li>Mallick H, Rahnavard A, McIver LJ, Ma S, Zhang Y, Nguyen LH, Tickle TL, Weingart G, Ren B, Schwager EH, Chatterjee S, Thompson KN, Wilkinson JE, Subramanian A, Lu Y, Waldron L, Paulson JN, Franzosa EA, Bravo HC, Huttenhower C (2021). <span class="exturl" data-url="aHR0cHM6Ly9qb3VybmFscy5wbG9zLm9yZy9wbG9zY29tcGJpb2wvYXJ0aWNsZT9pZD0xMC4xMzcxL2pvdXJuYWwucGNiaS4xMDA5NDQy">Multivariable Association Discovery in Population-scale Meta-omics Studies</span>. PLoS Computational Biology, 17(11):e1009442.</li></ul><h1 id="加关注"><a class="anchor" href="#加关注">#</a> 加关注</h1><table align="center"><tr><td align="center"><img data-src="https://cdn.jsdelivr.net/gh/liaochenlanruo/cdn@master/img/social/生信之巅公众号.jpg" alt="生信之巅微信公众号" style="width:100px;height:100px;vertical-align:-20px;border-radius:0;margin-right:0;margin-bottom:5px;align:center"></td><td align="center"><img data-src="https://cdn.jsdelivr.net/gh/liaochenlanruo/cdn@master/img/social/小程序码.png" alt="生信之巅小程序码" style="width:100px;height:100px;vertical-align:-20px;border-radius:0;margin-left:0;margin-bottom:5px;align:center"></td></tr></table><div class="tags"><a href="/tags/%E6%89%A9%E5%A2%9E%E5%AD%90/" rel="tag"><i class="ic i-tag"></i> 扩增子</a> <a href="/tags/%E7%94%9F%E4%BF%A1%E8%BD%AF%E4%BB%B6/" rel="tag"><i class="ic i-tag"></i> 生信软件</a> <a href="/tags/R%E8%AF%AD%E8%A8%80/" rel="tag"><i class="ic i-tag"></i> R语言</a></div></div><footer><div class="meta"><span class="item"><span class="icon"><i class="ic i-calendar-check"></i> </span><span class="text">Edited on</span> <time title="Modified: 2024-08-12 21:58:35" itemprop="dateModified" datetime="2024-08-12T21:58:35+08:00">2024-08-12</time> </span><span id="post/1177.html" class="item leancloud_visitors" data-flag-title="用MaAsLin2包做微生物组多变量线性模型关联分析" title="Views"><span class="icon"><i class="ic i-eye"></i> </span><span class="text">Views</span> <span class="leancloud-visitors-count"></span> <span class="text">times</span></span></div><div class="reward"><button><i class="ic i-heartbeat"></i> Donate</button><p>Give me a cup of [coffee]~(￣▽￣)~*</p><div id="qr"><div><img data-src="/images/reward-wepays.jpg" alt="Hualin Liu WeChat Pay"><p>WeChat Pay</p></div><div><img data-src="/images/AliPays.jpg" alt="Hualin Liu Alipay"><p>Alipay</p></div></div></div><div id="copyright"><ul><li class="author"><strong>Post author: </strong>liaochenlanruo <i class="ic i-at"><em>@</em></i>了尘兰若的小坑</li><li class="link"><strong>Post link: </strong><a href="https://liaochenlanruo.gitee.io/post/1177.html" title="用MaAsLin2包做微生物组多变量线性模型关联分析">https://liaochenlanruo.gitee.io/post/1177.html</a></li><li class="license"><strong>Copyright Notice: </strong>All articles in this blog are licensed under <span class="exturl" data-url="aHR0cHM6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LW5jLXNhLzQuMC9kZWVkLnpo"><i class="ic i-creative-commons"><em>(CC)</em></i>BY-NC-SA</span> unless stating additionally.</li></ul></div></footer></article></div><div class="post-nav"><div class="item left"><a href="/post/5e3d.html" itemprop="url" rel="prev" data-background-image="https:&#x2F;&#x2F;cdn.jsdelivr.net&#x2F;gh&#x2F;liaochenlanruo&#x2F;cdn@master&#x2F;img&#x2F;custom&#x2F;bgs&#x2F;thumb_213.webp" title="Shiny从入门到入定——13-Why reactivity?"><span class="type">Previous Post</span> <span class="category"><i class="ic i-flag"></i> IT</span><h3>Shiny从入门到入定——13-Why reactivity?</h3></a></div><div class="item right"><a href="/post/43fc.html" itemprop="url" rel="next" data-background-image="https:&#x2F;&#x2F;cdn.jsdelivr.net&#x2F;gh&#x2F;liaochenlanruo&#x2F;cdn@master&#x2F;img&#x2F;custom&#x2F;bgs&#x2F;thumb_215.webp" title="深入理解特征标准化：为何、如何及其重要性"><span class="type">Next Post</span> <span class="category"><i class="ic i-flag"></i> IT</span><h3>深入理解特征标准化：为何、如何及其重要性</h3></a></div></div><div class="wrap" id="comments"></div></div><div id="sidebar"><div class="inner"><div class="panels"><div class="inner"><div class="contents panel pjax" data-title="Contents"><ol class="toc"><li class="toc-item toc-level-1"><a class="toc-link" href="#%E7%AE%80%E4%BB%8B"><span class="toc-number">1.</span> <span class="toc-text">简介</span></a></li><li class="toc-item toc-level-1"><a class="toc-link" href="#%E5%AE%89%E8%A3%85"><span class="toc-number">2.</span> <span class="toc-text">安装</span></a></li><li class="toc-item toc-level-1"><a class="toc-link" href="#%E5%BE%AE%E7%94%9F%E7%89%A9%E7%BB%84%E5%85%B3%E8%81%94%E6%A3%80%E6%B5%8B"><span class="toc-number">3.</span> <span class="toc-text">微生物组关联检测</span></a><ol class="toc-child"><li class="toc-item toc-level-2"><a class="toc-link" href="#%E8%BE%93%E5%85%A5%E6%96%87%E4%BB%B6"><span class="toc-number">3.1.</span> <span class="toc-text">输入文件</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#%E5%BE%AE%E7%94%9F%E7%89%A9%E7%BB%84%E7%89%B9%E5%BE%81%E6%95%B0%E6%8D%AE%E6%88%96%E5%8A%9F%E8%83%BD%E6%95%B0%E6%8D%AE"><span class="toc-number">3.1.1.</span> <span class="toc-text">微生物组特征数据或功能数据</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#%E5%85%83%E6%95%B0%E6%8D%AE"><span class="toc-number">3.1.2.</span> <span class="toc-text">元数据</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#%E8%AF%BB%E5%85%A5%E6%96%87%E4%BB%B6"><span class="toc-number">3.1.3.</span> <span class="toc-text">读入文件</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E8%BF%90%E8%A1%8Cmaaslin-2"><span class="toc-number">3.2.</span> <span class="toc-text">运行 MaAsLin 2</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E8%BE%93%E5%87%BA"><span class="toc-number">3.3.</span> <span class="toc-text">输出</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#%E9%87%8D%E8%A6%81%E5%85%B3%E8%81%94"><span class="toc-number">3.3.1.</span> <span class="toc-text">重要关联</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#%E8%BE%93%E5%87%BA%E6%96%87%E4%BB%B6%E5%AE%8C%E6%95%B4%E5%88%97%E8%A1%A8"><span class="toc-number">3.3.2.</span> <span class="toc-text">输出文件完整列表</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#maaslin-2%E5%9C%A8%E5%8A%9F%E8%83%BD%E8%B0%B1%E4%B8%8A%E7%9A%84%E5%BA%94%E7%94%A8"><span class="toc-number">3.3.3.</span> <span class="toc-text">MaAsLin 2 在功能谱上的应用</span></a></li></ol></li></ol></li><li class="toc-item toc-level-1"><a class="toc-link" href="#%E9%AB%98%E7%BA%A7%E4%B8%BB%E9%A2%98"><span class="toc-number">4.</span> <span class="toc-text">高级主题</span></a><ol class="toc-child"><li class="toc-item toc-level-2"><a class="toc-link" href="#%E4%BA%A4%E4%BA%92%E4%BD%9C%E7%94%A8"><span class="toc-number">4.1.</span> <span class="toc-text">交互作用</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E9%9A%8F%E6%9C%BA%E6%95%88%E5%BA%94"><span class="toc-number">4.2.</span> <span class="toc-text">随机效应</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E5%85%B6%E4%BB%96%E9%80%89%E9%A1%B9"><span class="toc-number">4.3.</span> <span class="toc-text">其他选项</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#maaslin-2-%E4%B8%AD%E7%9A%84%E6%B5%81%E8%A1%8C%E7%8E%87%E5%92%8C%E4%B8%B0%E5%BA%A6%E8%BF%87%E6%BB%A4"><span class="toc-number">4.3.1.</span> <span class="toc-text">MaAsLin 2 中的流行率和丰度过滤</span></a></li></ol></li></ol></li><li class="toc-item toc-level-1"><a class="toc-link" href="#%E5%91%BD%E4%BB%A4%E8%A1%8C"><span class="toc-number">5.</span> <span class="toc-text">命令行</span></a></li><li class="toc-item toc-level-1"><a class="toc-link" href="#%E5%8F%82%E8%80%83%E6%96%87%E7%8C%AE"><span class="toc-number">6.</span> <span class="toc-text">参考文献</span></a></li><li class="toc-item toc-level-1"><a class="toc-link" href="#%E5%8A%A0%E5%85%B3%E6%B3%A8"><span class="toc-number">7.</span> <span class="toc-text">加关注</span></a></li></ol></div><div class="related panel pjax" data-title="Related"><ul><li><a href="/post/19824.html" rel="bookmark" title="生物信息学1：VMware虚拟机及Bio-linux安装与配置">生物信息学1：VMware虚拟机及Bio-linux安装与配置</a></li><li><a href="/post/9.html" rel="bookmark" title="生物信息学2：VirtualBox虚拟机及Bio-Linux安装">生物信息学2：VirtualBox虚拟机及Bio-Linux安装</a></li><li><a href="/post/10877.html" rel="bookmark" title="生物信息学3：微生物基因组学常用软件安装">生物信息学3：微生物基因组学常用软件安装</a></li><li><a href="/post/30650.html" rel="bookmark" title="根据基因组预测表型 —— traitar的安装与使用">根据基因组预测表型 —— traitar的安装与使用</a></li><li><a href="/post/44606.html" rel="bookmark" title="kSNP3寻找SNPs并构建进化树">kSNP3寻找SNPs并构建进化树</a></li><li><a href="/post/43504.html" rel="bookmark" title="用wget批量下载含有链接的文件/目录">用wget批量下载含有链接的文件/目录</a></li><li><a href="/post/94f2.html" rel="bookmark" title="为PubMed添加功能">为PubMed添加功能</a></li><li><a href="/post/4e1.html" rel="bookmark" title="OrthoFinder2—同源蛋白家族聚类">OrthoFinder2—同源蛋白家族聚类</a></li><li><a href="/post/848f.html" rel="bookmark" title="PGCGAP中文说明">PGCGAP中文说明</a></li><li><a href="/post/d163.html" rel="bookmark" title="Bioconda贡献指南">Bioconda贡献指南</a></li><li><a href="/post/f6c9.html" rel="bookmark" title="Linux和基因组测序技术初识">Linux和基因组测序技术初识</a></li><li><a href="/post/5908.html" rel="bookmark" title="BtToxin_Digger--A high-throughput Bacillus thuringiensis toxin mining pipeline">BtToxin_Digger--A high-throughput Bacillus thuringiensis toxin mining pipeline</a></li><li><a href="/post/ab1b.html" rel="bookmark" title="宏基因组分析流程及代码">宏基因组分析流程及代码</a></li><li><a href="/post/4cf4.html" rel="bookmark" title="Use microeco分析扩增子数据">Use microeco分析扩增子数据</a></li><li><a href="/post/1755.html" rel="bookmark" title="扩增子分析--计算随机过程和决定性过程比例">扩增子分析--计算随机过程和决定性过程比例</a></li><li><a href="/post/e7e9.html" rel="bookmark" title="根据assession number批量从NCB下载数据">根据assession number批量从NCB下载数据</a></li><li><a href="/post/e922.html" rel="bookmark" title="Swissprot数据库的本地化与序列比对并与其他数据库快速mapping">Swissprot数据库的本地化与序列比对并与其他数据库快速mapping</a></li><li><a href="/post/412a.html" rel="bookmark" title="构建样本vs基因矩阵">构建样本vs基因矩阵</a></li><li><a href="/post/9052.html" rel="bookmark" title="CAZy碳水化合物活性酶预测">CAZy碳水化合物活性酶预测</a></li><li><a href="/post/5324.html" rel="bookmark" title="原核生物基因岛预测">原核生物基因岛预测</a></li><li><a href="/post/d9f9.html" rel="bookmark" title="按照Contig切割GenBank文件">按照Contig切割GenBank文件</a></li><li><a href="/post/3a23.html" rel="bookmark" title="从GenBank文件中提取Features">从GenBank文件中提取Features</a></li><li><a href="/post/fb68.html" rel="bookmark" title="使用EffectiveT3预测微生物中的III型分泌系统效应蛋白">使用EffectiveT3预测微生物中的III型分泌系统效应蛋白</a></li><li><a href="/post/c886.html" rel="bookmark" title="SignalP+TMHMM预测微生物分泌蛋白">SignalP+TMHMM预测微生物分泌蛋白</a></li><li><a href="/post/6a93.html" rel="bookmark" title="在FASTA文件中搜索完全匹配的短序列">在FASTA文件中搜索完全匹配的短序列</a></li><li><a href="/post/ea71.html" rel="bookmark" title="在Linux服务器中安装网页版Rstudio">在Linux服务器中安装网页版Rstudio</a></li><li><a href="/post/a713.html" rel="bookmark" title="R语言安装依赖包错误集锦">R语言安装依赖包错误集锦</a></li><li><a href="/post/d444.html" rel="bookmark" title="NCBI上传基因簇之tbl2asn的使用">NCBI上传基因簇之tbl2asn的使用</a></li><li><a href="/post/18ea.html" rel="bookmark" title="利用NCycDB数据库从宏基因组中预测氮循环基因">利用NCycDB数据库从宏基因组中预测氮循环基因</a></li><li><a href="/post/36cc.html" rel="bookmark" title="R语言绘制分组条形图">R语言绘制分组条形图</a></li><li><a href="/post/1551.html" rel="bookmark" title="宏病毒组分析流程1-VirSorter2">宏病毒组分析流程1-VirSorter2</a></li><li><a href="/post/8fb3.html" rel="bookmark" title="利用GTDB-TK对细菌和古菌基因组进行物种分类">利用GTDB-TK对细菌和古菌基因组进行物种分类</a></li><li><a href="/post/85d7.html" rel="bookmark" title="计算蛋白质等电点并绘制全局pI图">计算蛋白质等电点并绘制全局pI图</a></li><li><a href="/post/92eb.html" rel="bookmark" title="使用DeepARG预测抗生素抗性基因ARGs">使用DeepARG预测抗生素抗性基因ARGs</a></li><li><a href="/post/74ad.html" rel="bookmark" title="Nanopore基因组组装">Nanopore基因组组装</a></li><li><a href="/post/2581.html" rel="bookmark" title="使用eggNOG-mapper注释基因组">使用eggNOG-mapper注释基因组</a></li><li><a href="/post/d862.html" rel="bookmark" title="PGCGAP - the Prokaryotic Genomics and Comparative Genomics Analysis Pipeline v1.0.33">PGCGAP - the Prokaryotic Genomics and Comparative Genomics Analysis Pipeline v1.0.33</a></li><li><a href="/post/e6ae.html" rel="bookmark" title="利用PGCGAP根据ids提取序列信息">利用PGCGAP根据ids提取序列信息</a></li><li><a href="/post/213.html" rel="bookmark" title="多种方法批量下载NCBI基因组">多种方法批量下载NCBI基因组</a></li><li><a href="/post/33b.html" rel="bookmark" title="代谢组相关软件的安装及使用">代谢组相关软件的安装及使用</a></li><li><a href="/post/377e.html" rel="bookmark" title="使用xcms3处理和分析LC-MS数据">使用xcms3处理和分析LC-MS数据</a></li><li><a href="/post/df57.html" rel="bookmark" title="用metid构建代谢组数据库">用metid构建代谢组数据库</a></li><li><a href="/post/0.html" rel="bookmark" title="基于TidyMass的非靶向代谢组学分析">基于TidyMass的非靶向代谢组学分析</a></li><li><a href="/post/29bf.html" rel="bookmark" title="批量下载某研究方向重要文献">批量下载某研究方向重要文献</a></li><li><a href="/post/c617.html" rel="bookmark" title="16S扩增子测序及宏基因组测序">16S扩增子测序及宏基因组测序</a></li><li class="active"><a href="/post/1177.html" rel="bookmark" title="用MaAsLin2包做微生物组多变量线性模型关联分析">用MaAsLin2包做微生物组多变量线性模型关联分析</a></li><li><a href="/post/7449.html" rel="bookmark" title="NCBI上传基因簇之table2asn的使用">NCBI上传基因簇之table2asn的使用</a></li></ul></div><div class="overview panel" data-title="Overview"><div class="author" itemprop="author" itemscope itemtype="http://schema.org/Person"><img class="image" itemprop="image" alt="Hualin Liu" data-src="/images/head.jpg"><p class="name" itemprop="name">Hualin Liu</p><div class="description" itemprop="description">分享微生物生物信息学分析方法，欢迎加入QQ群交流945751012，不接受群内广告！</div></div><nav class="state"><div class="item posts"><a href="/archives/"><span class="count">130</span> <span class="name">posts</span></a></div><div class="item categories"><a href="/categories/"><span class="count">12</span> <span class="name">categories</span></a></div><div class="item tags"><a href="/tags/"><span class="count">54</span> <span class="name">tags</span></a></div></nav><div class="social"><span class="exturl item github" data-url="aHR0cDovL2dpdGh1Yi5jb20vbGlhb2NoZW5sYW5ydW8=" title="http:&#x2F;&#x2F;github.com&#x2F;liaochenlanruo"><i class="ic i-github"></i></span> <span class="exturl item zhihu" data-url="aHR0cHM6Ly93d3cuemhpaHUuY29tL3Blb3BsZS9zdWFuLWxhLW1pYW4tcGlhbi10YW5nLWNpdW0=" title="https:&#x2F;&#x2F;www.zhihu.com&#x2F;people&#x2F;suan-la-mian-pian-tang-cium"><i class="ic i-zhihu"></i></span> <span class="exturl item weibo" data-url="aHR0cHM6Ly93ZWliby5jb20vdS8yNzE1MjEwOTIz" title="https:&#x2F;&#x2F;weibo.com&#x2F;u&#x2F;2715210923"><i class="ic i-weibo"></i></span> <span class="exturl item about" data-url="aHR0cHM6Ly93d3cubGlhb2NoZW5sYW5ydW8uZnVuL2Fib3V0" title="https:&#x2F;&#x2F;www.liaochenlanruo.fun&#x2F;about"><i class="ic i-address-card"></i></span> <span class="exturl item email" data-url="bWFpbHRvOmxpYW9jaGVubGFucnVvQHdlYm1haWwuaHphdS5lZHUuY24=" title="mailto:liaochenlanruo@webmail.hzau.edu.cn"><i class="ic i-envelope"></i></span> <span class="exturl item douban" data-url="aHR0cHM6Ly93d3cuZG91YmFuLmNvbS9wZW9wbGUvbGlhb2NoZW5sYW5ydW8vP19pPTczNDYxMjVRalo1QjZWLw==" title="https:&#x2F;&#x2F;www.douban.com&#x2F;people&#x2F;liaochenlanruo&#x2F;?_i&#x3D;7346125QjZ5B6V&#x2F;"><i class="ic i-douban"></i></span> <span class="exturl item google" data-url="aHR0cHM6Ly9zY2hvbGFyLmdvb2dsZS5jby5qcC9jaXRhdGlvbnM/dXNlcj1YYW9STk1RQUFBQUomaGw9amE=" title="https:&#x2F;&#x2F;scholar.google.co.jp&#x2F;citations?user&#x3D;XaoRNMQAAAAJ&amp;hl&#x3D;ja"><i class="ic i-google"></i></span></div><ul class="menu"><li class="item"><a href="/" rel="section"><i class="ic i-home"></i>Home</a></li><li class="item dropdown"><a href="javascript:void(0);"><i class="ic i-user"></i>About</a><ul class="submenu"><li class="item"><a href="/about/" rel="section"><i class="ic i-user"></i>About me</a></li><li class="item"><a href="/comment/" rel="section"><i class="ic i-envelope"></i>Comment</a></li></ul></li><li class="item dropdown"><a href="javascript:void(0);"><i class="ic i-feather"></i>Posts</a><ul class="submenu"><li class="item"><a href="/archives/" rel="section"><i class="ic i-list-alt"></i>Archives</a></li><li class="item"><a href="/categories/" rel="section"><i class="ic i-th"></i>Categories</a></li><li class="item"><a href="/tags/" rel="section"><i class="ic i-tags"></i>Tags</a></li></ul></li><li class="item dropdown"><a href="javascript:void(0);"><i class="ic i-list-ol"></i>List</a><ul class="submenu"><li class="item"><a href="/photos/" rel="section"><i class="ic i-person"></i>Photos</a></li><li class="item"><a href="/skip/gallery/" rel="section"><i class="ic i-cloud"></i>Gallery</a></li><li class="item"><a href="/skip/box/" rel="section"><i class="ic i-magic"></i>Box</a></li><li class="item"><span class="exturl" data-url="aHR0cHM6Ly9saWFvY2hlbmxhbnJ1by5mdW4vcmVmZXJlbmNlLw=="><i class="ic i-th"></i>cheatsheets</span></li></ul></li><li class="item"><a href="/donate/" rel="section"><i class="ic i-coffee"></i>Donate</a></li><li class="item"><a href="/friends/" rel="section"><i class="ic i-heart"></i>Friends</a></li><li class="item"><span class="exturl" data-url="aHR0cHM6Ly9saWFvY2hlbmxhbnJ1by5naXRodWIuaW8="><i class="ic i-external-link-alt"></i>中文版</span></li><li class="item"><span class="exturl" data-url="aHR0cHM6Ly90cmF2ZWxsaW5ncy5saW5r"><i class="ic i-forward"></i>Travelling</span></li></ul></div></div></div><ul id="quick"><li class="prev pjax"><a href="/post/5e3d.html" rel="prev" title="Previous Post"><i class="ic i-chevron-left"></i></a></li><li class="up"><i class="ic i-arrow-up"></i></li><li class="down"><i class="ic i-arrow-down"></i></li><li class="next pjax"><a href="/post/43fc.html" rel="next" title="Next Post"><i class="ic i-chevron-right"></i></a></li><li class="percent"></li></ul></div></div><div class="dimmer"></div></div></main><footer id="footer"><div class="inner"><div class="widgets"></div><div class="status"><div class="copyright">&copy; 2018 – <span itemprop="copyrightYear">2024</span> <span class="with-love"><i class="ic i-sakura rotate"></i> </span><span class="author" itemprop="copyrightHolder">Hualin Liu @ ResearchGo</span></div><div class="count"><span class="post-meta-item-icon"><i class="ic i-chart-area"></i> </span><span title="Symbols count total">788k words</span> <span class="post-meta-divider">|</span> <span class="post-meta-item-icon"><i class="ic i-coffee"></i> </span><span title="Reading time total">11:57</span><script async src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script><span class="post-meta-divider">|</span> <span class="post-meta-item-icon"><i class="ic i-info-circle"></i> </span><span style="padding-left:1px"><span id="busuanzi_container_site_pv">Total visits: <span id="busuanzi_value_site_pv" style="color:#f99"></span> times</span> <span class="post-meta-divider">|</span> <span class="post-meta-item-icon"><i class="ic i-user"></i> </span><span style="padding-left:1px"><span id="busuanzi_container_site_uv">Total visitors: <span id="busuanzi_value_site_uv" style="color:#f99"></span> people</span></span></span></div><div class="powered-by">Powered by <span class="exturl" data-url="aHR0cHM6Ly9oZXhvLmlv">Hexo</span> & Theme.<span class="exturl" data-url="aHR0cHM6Ly9naXRodWIuY29tL2FtZWhpbWUvaGV4by10aGVtZS1zaG9rYQ==">Shoka</span></div></div></div></footer></div><script data-config type="text/javascript">var LOCAL={path:"post/1177.html",favicon:{show:"（●´3｀●）Goooood",hide:"(´Д｀)Booooom"},search:{placeholder:"Search for Posts",empty:"We didn't find any results for the search: ${query}",stats:"${hits} results found in ${time} ms"},valine:!0,fancybox:!0,copyright:'Copied to clipboard successfully! <br> All articles in this blog are licensed under <i class="ic i-creative-commons"></i>BY-NC-SA.',ignores:[function(e){return e.includes("#")},function(e){return new RegExp(LOCAL.path+"$").test(e)}]}</script><script src="https://cdn.polyfill.io/v2/polyfill.js"></script><script src="//cdn.jsdelivr.net/combine/npm/pace-js@1.0.2/pace.min.js,npm/pjax@0.2.8/pjax.min.js,npm/whatwg-fetch@3.4.0/dist/fetch.umd.min.js,npm/animejs@3.2.0/lib/anime.min.js,npm/algoliasearch@4/dist/algoliasearch-lite.umd.js,npm/instantsearch.js@4/dist/instantsearch.production.min.js,npm/lozad@1/dist/lozad.min.js,npm/quicklink@2/dist/quicklink.umd.js"></script><script src="/js/app.js?v=0.2.5"></script><script data-pjax>var _hmt=_hmt||[];!function(){var e=document.createElement("script");e.src="https://hm.baidu.com/hm.js?d211830a796ceefb38a141fde14e4d5a";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)}()</script></body></html>